package ar.edu.utn.frba.disenio.aterrizar.estrategia;

import java.util.ArrayList;
import java.util.List;

import ar.edu.utn.frba.disenio.aterrizar.aerolineas.Vuelo;
import ar.edu.utn.frba.disenio.aterrizar.aerolineas.*;
import ar.edu.utn.frba.disenio.aterrizar.aerolineas.AerolineaOceanic;
import ar.edu.utn.frba.disenio.aterrizar.aerolineas.AsientoDTO;
import ar.edu.utn.frba.disenio.aterrizar.busquedas.*;

public class EstrategiaParaOrigenYDestino extends EstrategiaBusqueda {

	@Override
	public ArrayList<Vuelo> buscar(AerolineaOceanic aerolinea, CriterioBusqueda busqueda, AdapterOceanic adapterOceanic) {
		
		String unOrigen = estrategiaOrigen.parsearLugar(busqueda.origen);
		String unDestino = estrategiaDestino.parsearLugar(busqueda.destino);
		String fecha = busqueda.fecha.convertirAString();

		ArrayList<Vuelo> retVal = new ArrayList<Vuelo>();
		List<AsientoDTO> disponibles = aerolinea.asientosDisponiblesParaOrigenYDestino(unOrigen, unDestino, fecha);
		for(AsientoDTO otroAsiento : disponibles){
			String [] otroVuelo = adapterOceanic.parsearAsientoDTOAVuelo(otroAsiento);
			Vuelo elOtroVuelo = new Vuelo(otroVuelo);
			if(busqueda.fecha.fechaEstasEntre(elOtroVuelo.fechaSalida, elOtroVuelo.fechaLlegada)){
				retVal.add(elOtroVuelo);
			}
		}
		return retVal;
	}
}
